<?php

class MensagemController extends Controller {

    /**
     * @final   pacote das views deste controller
     */
    const PACKAGE_VIEW = 'mensagem';
    /**
     * @var MensagemService
     */
    private $mensagemService;
    /**
     * @var AtendimentoService
     */
    private $atendimentoService;

    public function __construct() {
        $this->mensagemService = MensagemService::getInstance();
        $this->atendimentoService = AtendimentoService::getInstance();
    }

    public function respostasParaLiberar() {
        $this->save(SESSION_INTERFACE, 'BlockedMessagesList', $this->mensagemService->findAllBlockedMessages());
        $this->view('respostas_para_liberar', self::PACKAGE_VIEW);
    }

    public function mensagemBloqueada() {
        $IDMensagem = treatUrl('id');
        multipleEntities($IDMensagem);
        $Mensagem = $this->mensagemService->findWaitingLiberationById($IDMensagem);
        $Chamado = $this->atendimentoService->findById($Mensagem->getIDChamado());
        if( empty($Mensagem) ) {
            redirect('mensagem', 'respostas-para-liberar');
        }
        $this->save(SESSION_INTERFACE, 'Message', $Mensagem);
        $this->save(SESSION_INTERFACE, 'Called', $Chamado);
        $this->view('mensagem_bloqueada', self::PACKAGE_VIEW);
    }

    public function bloquearMensagem() {
        $IDMensagem = $_POST['IDMensagem'];
        multipleEntities($IDMensagem);

        if( empty($IDMensagem) ) {
            $this->saveReturn('Mensagem para bloquear não foi recebida.');
        }

        if( !$this->hasReturn() ) {
            if( $this->mensagemService->blockMessage($IDMensagem) ) {
                $this->saveReturn('Mensagem Bloqueada com Sucesso!', 1);
            } else {
                $this->saveReturn('Ocorreu um erro ao Desbloqueada a Mensagem!', 1);
            }
        }

        $this->showJsonResponse();
    }

    public function desbloquearMensagem() {
        $ArDados = $_POST;
        multipleEntities($ArDados);

        if( empty($ArDados['IDMensagem']) ) {
            $this->saveReturn('Mensagem para liberar não foi recebida');
        } else if( empty($ArDados['TxMensagem']) ) {
            $this->saveReturn('Conteúdo da mensagem não foi recebido.');
        } else if( empty($ArDados['IDChamado']) ) {
            $this->saveReturn('O Id Chamado não foi recebido.');
        }

        if( !$this->hasReturn() ) {
            if( $this->mensagemService->unblockMessage($ArDados) ) {
                $this->saveReturn('Mensagem Bloqueada com Sucesso!', 1);
            } else {
                $this->saveReturn('Ocorreu um erro ao Desbloqueada a Mensagem!', 1);
            }
        }

        $this->showJsonResponse();


    }

}

?>
